Masked LM
Masked language model
MLM
BERTの事前学習の際に利用されるタスクの一つ
ランダムに単語をマスクに入れ替えてマスク単語を予測させる
https://medium.com/lsc-psd/nlpの神様-bert-とは何か-b3c72f3aaabe
入力語句内のすべての単語に対し、
15%の確率で単語にラベルをつけてMASKに入れ替えます。
次に、MASKに入れ替えられた単語に対して、
その中の10%の確率で他のランダム単語に入れ替えて、
また他の10%の確率で元の単語に戻す
https://gyazo.com/4aec8434ac696582cbc9e44ed8c0eb67
戻す必要あるのか?miyamonz.icon
ラベリングされた単語の予測結果と元の単語でLoss Maskを計算する
最初の15%で選ばれたヤツをBERT_labelを付与する
ここの部分は
MASKまたは単語
MASKであるなら正しい単語を
単語であるなら、そのままであるか、別の単語を
ということになる
モデルとしては、単語集合上の確率としてdense とsoftmaxとかで表現するのだろう
従来のlanguage modelと比べて、方向を気にしないで予測できるのが良い
双方向、とBERTは呼んでいるが、これは両方向の結合ではないので「非方向」と言う方が適切
一方で、従来のlmは方向があって、その前提でずっと考えていたということを強調するなら両方向と言うのも頷ける気もするmiyamonz.icon
そもそもlanguage modelは$ p(w_1, ...w_i)を考えるのと同じということがあり、
すなわちmaked lmというものを、taskではなくlmというのは、従来一般的であった確率と別のものを考えてると言える?
学習時の損失関数の計算
https://github.com/google-research/bert/blob/master/run_pretraining.py#L240-L282
ここらへんみるとわかる
gatherあたりで、maskされた部分だけ抽出
その後、Masked LM学習時の出力層側の計算で謎なとこ これをかませつつ、語彙集合上にsofmaxで確率を求める
正解ラベル(つまり元の入力語彙)の部分の確率を合計
たしかに、学習に使われているのはmask labelがあるところだけ